package com.hs.ph.dao.impl;

import com.hs.ph.dao.CommunityDao;
import com.hs.ph.entity.Community;
import com.hs.ph.utitl.JDBCDruidUtil;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class CommunityDaoImpl implements CommunityDao {
    @Override
    public int insert(Community community) {
        return 0;
    }

    @Override
    public int delete(int communityId) {
        return 0;
    }

    @Override
    public int update(Community community) {
        return 0;
    }

    @Override
    public List<Community> selectAll(Map<String, String> map) {
        //分页 模糊 时间范围
        List<Community> list = new ArrayList<>();
        String sql="select * from community where 1=1";
        List<Object> params = new ArrayList<>();
        String communityName = map.get("communityName");
        //判断是否有模糊查询
        if (communityName!=null && !"".equals(communityName)){
            sql+=" and communityName like ?";
            params.add("%"+communityName+"%");
        }
        //判断是否有时间范围查询
        String startTime = map.get("startTime");
        String endTime = map.get("endTime");
        if(startTime!=null && !"".equals(startTime)){
            sql+=" and createTime between ? and ?";
            params.add(startTime);
            params.add(endTime);
        }
        //分页查询
        String pn = map.get("pageNum");
        if(pn!=null && !"".equals(pn)){
            sql+=" limit ?,?";
            int pageNum = Integer.parseInt(pn);
            int pageSize = Integer.parseInt(map.get("pageSize"));
            params.add((pageNum-1)*pageSize);
            params.add(pageSize);
        }
        //查询
        Object[] obj = params.toArray();
        ResultSet res = JDBCDruidUtil.query(sql, obj);
        while (true) {
            try {
                if (!res.next()) break;
                Community community = new Community(res.getInt(1),
                        res.getString(2),
                        res.getString(3),
                        res.getString(4),
                        res.getString(5),
                        res.getString(6),
                        res.getString(7),
                        res.getString(8),
                        res.getDate(9),
                        res.getInt(10),
                        res.getInt(11),
                        res.getString(12),
                        res.getInt(13),
                        res.getInt(14),
                        res.getString(15));
                list.add(community);
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }

        }
        JDBCDruidUtil.close();
        return list;

    }


    @Override
    public int selectCount(Map<String, String> map) {
        int count = 0;
        String sql="select count(1) from community where 1=1";
        List<Object> params = new ArrayList<>();
        String communityName = map.get("communityName");
        //判断是否有模糊查询
        if (communityName!=null && !"".equals(communityName)){
            sql+=" and communityName like ?";
            params.add("%"+communityName+"%");
        }
        //判断是否有时间范围查询
        String startTime = map.get("startTime");
        String endTime = map.get("endTime");
        if(startTime!=null && !"".equals(startTime)){
            sql+=" and createTime between ? and ?";
            params.add(startTime);
            params.add(endTime);
        }

        //查询
        Object[] obj = params.toArray();
        ResultSet res = JDBCDruidUtil.query(sql, obj);
        while (true) {
            try {
                if (!res.next()) break;
                count=res.getInt(1);
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }

        }
        JDBCDruidUtil.close();
        return count;
    }
}
